package com.ruoyi.fly.service.impl;

import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.fly.domain.vo.StoreSearchVo;
import com.ruoyi.fly.enums.StoreType;
import com.ruoyi.fly.service.StoreService;
import com.ruoyi.fly.domain.Store;
import com.ruoyi.fly.domain.vo.StoreVo;
import com.ruoyi.fly.mapper.StoreJoinMapper;
import com.ruoyi.fly.mapper.StoreMapper;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StoreServiceImpl implements StoreService {


    @Autowired
    private StoreMapper storeMapper;

    @Autowired
    private StoreJoinMapper storeJoinMapper;

    @Autowired
    private ISysUserService sysUserService;

    /**
     * 查询店铺列表
     *
     * @return
     */
    @Override
    public List<StoreVo> selectStoreList(StoreSearchVo storeSearchVo) {
//        List<Store> stores = storeMapper.selectStoreList(store);
        List<StoreVo> storesVo = storeMapper.selectStoreVoList(storeSearchVo);
        storesVo.forEach(store2 -> {
            if (StringUtils.isNotBlank(store2.getStoreType())) {
                store2.setStoreTypeValue(StoreType.getValue(Integer.parseInt(store2.getStoreType())));
            }
            if (sysUserService.selectUserById(store2.getApplyUser()) != null){
                store2.setApplyUserName(sysUserService.selectUserById(store2.getApplyUser()).getNickName());
            }
            if (sysUserService.selectUserById(store2.getCreateUser()) != null){
                store2.setCreateUserName(sysUserService.selectUserById(store2.getCreateUser()).getNickName());
            }
        });
        return storesVo;
    }

    /**
     * 根据id查询店铺
     *
     * @param id
     * @return
     */
    @Override
    public StoreVo selectStoreById(String id) {
        Store store = storeMapper.selectStoreById(id);
        StoreVo storeVo = new StoreVo();
        BeanUtils.copyProperties(store, storeVo);
        storeVo.setStoreTypeValue(StoreType.getValue(Integer.parseInt(store.getStoreType())));
        if (sysUserService.selectUserById(store.getApplyUser()) != null){
            storeVo.setApplyUserName(sysUserService.selectUserById(store.getApplyUser()).getNickName());
        }
        return storeVo;
    }

    /**
     * 添加店铺
     *
     * @param store
     * @return
     */
    @Override
    public R insertStore(Store store) {
        store.setCreateUser(Long.valueOf(String.valueOf(SecurityUtils.getUserId())));
        store.setApplyType(0);
        return storeMapper.insertStore(store) > 0 ? R.ok("添加成功") : R.fail("操作失败");
    }

//    /**
//     * 申请店铺
//     *
//     * @param storeJoinVo
//     * @return
//     */
//    @Override
//    public R applyStore(StoreJoinVo storeJoinVo) {
//        Store store = storeMapper.selectStoreByMid(storeJoinVo.getMid());
//        if (store == null || store.getIsDelete() == 1) {
//            StoreJoin storeJoin = storeJoinMapper.selectByMid(storeJoinVo.getMid());
//            if (storeJoin == null) {
//                storeJoinMapper.addStoreJoin(storeJoinVo);
//            } else if (storeJoin.getApplyType() == 0) {
//                return R.fail("审核中");
//            }
//        } else {
//            return R.fail("已有实体店 不能在申请！！！");
//        }
//        return R.ok("申请已提交");
//
//    }

//
//    /**
//     * 审核
//     *
//     * @param examine
//     * @return
//     */
//    @Transactional
//    @Override
//    public R examineStore(Examine examine) {
//        StoreJoin storeJoin = storeJoinMapper.selectByMid(examine.getId());
//        storeJoin.setReason(examine.getReason());
//        storeJoin.setApplyUser(examine.getApplyUser());
//        //审核失败
//        if (examine.getApplyType() == 2) {
//            storeJoin.setApplyType(2);
//
//        } else {
//            storeJoin.setApplyType(1);
//            //创建店铺
//            Store store = new Store();
//            store.setStoreName(storeJoin.getStoreName());
//            store.setRemark(storeJoin.getRemark());
//            store.setStoreType(storeJoin.getStoreType());
//            store.setLongitude(storeJoin.getLongitude());
//            store.setLatitude(storeJoin.getLatitude());
//            store.setTelephone(storeJoin.getTelephone());
//            store.setBusinessHours(storeJoin.getBusinessHours());
//            store.setStorefrontImg(storeJoin.getStorefrontImg());
//            store.setBackgroundImg(storeJoin.getBackgroundImg());
//            store.setTurnover(new BigDecimal(0));
//            store.setOrderQuantity(0);
//            store.setProvince(storeJoin.getRegisterProvince());
//            store.setCity(storeJoin.getRegisterCity());
//            store.setArea(storeJoin.getRegisterArea());
//            store.setAddress(storeJoin.getAddress());
//            store.setMid(storeJoin.getMid());
//            store.setMobile(storeJoin.getTelephone());
//            storeMapper.insertStore(store);
//
//        }
//        storeJoinMapper.updateStoreJoin(storeJoin);
//        return R.ok();
//    }

    /**
     * 修改店铺
     *
     * @param storeVo
     * @return
     */
    @Override
    public R updateStore(StoreVo storeVo) {
        storeVo.setUpdateUser(SecurityUtils.getUserId());
        return storeMapper.updateStore(storeVo) > 0 ? R.ok("修改成功") : R.fail("操作失败");
    }


    /**
     * 删除店铺
     *
     * @param id
     * @return
     */
    @Override
    public R deleteStoreById(String id) {
        return storeMapper.deleteStoreById(id) > 0 ? R.ok("删除成功") : R.fail("操作失败");
    }

    @Override
    public R deleteStoreByIds(String[] ids) {
        return storeMapper.deleteStoreByIds(ids) > 0 ? R.ok("删除成功") : R.fail("操作失败");
    }
}
